package Interface;

import java.util.*;
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import Language.Language;

public class Accueil extends JFrame {

	protected JLabel lblUser, lblUserLogger, lblRecherche;
	protected String userCo;
	protected JMenu mMenu, mAPropos;
	protected JMenuBar mbBarre;
	protected JMenuItem miProfil, miQuitter;
	protected JPanel pnlConteneur_main;
	protected JButton btnAjoutListe, btnRecherche, btnModifierListe, btnSupprimerListe, btnAddItem, BtnDeleteItem;
	protected JList lstMesItems, lstChoixListe;
	protected JTextField txtRecherche;
	protected JScrollPane ascenseur, ascenseur2;
	
	//Test
	private String [] options = {"Coucou", "le", "monde", "!", "Nyu", "Liste", "MAX", "Longueur", "test", "Pwet"};
	
	public Accueil(Hashtable user) {
		// Titre de la fenetre
		super(Language.getAnInternationalizeString("Acceuil_Title"));
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		// Conteneur principal
		pnlConteneur_main = (JPanel) new JPanel(); 
		pnlConteneur_main.setLayout(new GridBagLayout());
		GridBagConstraints contraintes = new GridBagConstraints();

		// Ajout du menu
		// Creation de la barre
		mbBarre = new JMenuBar();
		// Creation du menu
		mMenu = new JMenu(Language.getAnInternationalizeString("Accueil_MenuF"));
		mAPropos = new JMenu(Language.getAnInternationalizeString("Accueil_MenuAP"));
		// Creation sous menu
		miProfil = new JMenuItem(Language.getAnInternationalizeString("Accueil_SMenuF1"));
		miProfil.addActionListener(new BtnAction());
		miQuitter = new JMenuItem(Language.getAnInternationalizeString("Accueil_SMenuF2"));
		miQuitter.addActionListener(new BtnAction());
		//Ajout du menu a la barre
		mbBarre.add(mMenu);
		mbBarre.add(mAPropos);
		// Ajout sous menu au menu
		mMenu.add(miProfil);
		mMenu.add(miQuitter);
		// Ajout du menu
		setJMenuBar(mbBarre);
		
		//Ajout du label Recherche
		lblRecherche = new JLabel(Language.getAnInternationalizeString("Accueil_Recherche"));
		contraintes.fill = GridBagConstraints.HORIZONTAL;
		contraintes.anchor = GridBagConstraints.NORTH;
		contraintes.weightx = 1.0;
		contraintes.weighty = 1.0;
		contraintes.gridx = 0; // colonne 0 
		contraintes.gridy = 0; // ligne 0
		contraintes.gridwidth = 1; // le composant s'etend sur 1 colonne 
		contraintes.gridheight = 1; // le composant s'etend sur 1 ligne
		pnlConteneur_main.add(lblRecherche, contraintes);
		
		// Ajout de la textbox de recherche
		txtRecherche = new JTextField();
		contraintes.fill = GridBagConstraints.HORIZONTAL;
		contraintes.anchor = GridBagConstraints.NORTH;
		contraintes.weightx = 1.0;
		contraintes.weighty = 1.0;
		contraintes.gridx = 1; // colonne 0 
		contraintes.gridy = 0; // ligne 0
		contraintes.gridwidth = 1; // le composant s'etend sur 1 colonne 
		contraintes.gridheight = 1; // le composant s'etend sur 1 ligne
		pnlConteneur_main.add(txtRecherche, contraintes);
		
		// Ajout bouton recherche
		btnRecherche = new JButton(Language.getAnInternationalizeString("Accueil_btnRecherche"));
		contraintes.fill = GridBagConstraints.HORIZONTAL;
		contraintes.anchor = GridBagConstraints.NORTH;
		contraintes.weightx = 1.0;
		contraintes.weighty = 1.0;
		contraintes.gridx = 2; // colonne 0 
		contraintes.gridy = 0; // ligne 0
		contraintes.gridwidth = 1; // le composant s'etend sur 1 colonne 
		contraintes.gridheight = 1; // le composant s'etend sur 1 ligne
		pnlConteneur_main.add(btnRecherche, contraintes);
		
		// Ajout label User
		lblUser = new JLabel(Language.getAnInternationalizeString("Accueil_User"));
		contraintes.fill = GridBagConstraints.HORIZONTAL;
		contraintes.anchor = GridBagConstraints.NORTH;
		contraintes.weightx = 1.0;
		contraintes.weighty = 1.0;
		contraintes.gridx = 0; // colonne 0 
		contraintes.gridy = 1; // ligne 0
		contraintes.gridwidth = 1; // le composant s'etend sur 1 colonne 
		contraintes.gridheight = 1; // le composant s'etend sur 1 ligne
		pnlConteneur_main.add(lblUser, contraintes);
		
		//Ajout label UserCo
		userCo = user.get("login").toString();
		lblUserLogger = new JLabel(userCo);
		contraintes.fill = GridBagConstraints.HORIZONTAL;
		contraintes.anchor = GridBagConstraints.NORTH;
		contraintes.weightx = 1.0;
		contraintes.weighty = 1.0;
		contraintes.gridx = 1; // colonne 1 
		contraintes.gridy = 1; // ligne 1 
		contraintes.gridwidth = 1; // le composant s'etend sur 1 colonne
		contraintes.gridheight = 1; // le composant s'etend sur 1 ligne
		pnlConteneur_main.add(lblUserLogger, contraintes);
		
		//Ajout de toutes liste dispo
		lstChoixListe = new JList(options);
		ascenseur = new JScrollPane(lstChoixListe);
		contraintes.fill = GridBagConstraints.HORIZONTAL;
		contraintes.anchor = GridBagConstraints.NORTH;
		contraintes.weightx = 1.0;
		contraintes.weighty = 1.0;
		contraintes.gridx = 0; // colonne 0 
		contraintes.gridy = 2; // ligne 1 
		contraintes.gridwidth = 3; // le composant s'etend sur 1 colonne
		contraintes.gridheight = 5; // le composant s'etend sur 3 lignes
		pnlConteneur_main.add(ascenseur, contraintes);
		
		lstChoixListe.addListSelectionListener(new choixListe());
		
		// Ajout du bouton pour creer une nouvelle liste
		btnAjoutListe = new JButton(Language.getAnInternationalizeString("Accueil_btnAjout"));
		contraintes.fill = GridBagConstraints.HORIZONTAL;
		contraintes.anchor = GridBagConstraints.NORTH;
		contraintes.weightx = 1.0;
		contraintes.weighty = 1.0;
		contraintes.ipadx = 0;
		contraintes.gridx = 0; // colonne 2 
		contraintes.gridy = 7; // ligne 2 
		contraintes.gridwidth = 1; // le composant s'etend sur 2 colonnes 
		contraintes.gridheight = 1; // le composant s'etend sur 1 ligne
		pnlConteneur_main.add(btnAjoutListe, contraintes);
		btnAjoutListe.addActionListener(new BtnAction());
		
		// Ajout du bouton pour modifier une  liste
		btnModifierListe = new JButton(Language.getAnInternationalizeString("Accueil_btnModifier"));
		contraintes.fill = GridBagConstraints.HORIZONTAL;
		contraintes.anchor = GridBagConstraints.NORTH;
		contraintes.weightx = 1.0;
		contraintes.weighty = 1.0;
		contraintes.ipadx = 0;
		contraintes.gridx = 1; // colonne 2 
		contraintes.gridy = 7; // ligne 2 
		contraintes.gridwidth = 1; // le composant s'etend sur 2 colonnes 
		contraintes.gridheight = 1; // le composant s'etend sur 1 ligne
		pnlConteneur_main.add(btnModifierListe, contraintes);
		btnModifierListe.addActionListener(new BtnAction());
		
		// Ajout du bouton pour supprimer une  liste
		btnSupprimerListe = new JButton(Language.getAnInternationalizeString("Accueil_btnSupprimer"));
		contraintes.fill = GridBagConstraints.HORIZONTAL;
		contraintes.anchor = GridBagConstraints.NORTH;
		contraintes.weightx = 1.0;
		contraintes.weighty = 1.0;
		contraintes.ipadx = 0;
		contraintes.gridx = 2; // colonne 2 
		contraintes.gridy = 7; // ligne 2 
		contraintes.gridwidth = 1; // le composant s'etend sur 2 colonnes 
		contraintes.gridheight = 1; // le composant s'etend sur 1 ligne
		pnlConteneur_main.add(btnSupprimerListe, contraintes);
		btnSupprimerListe.addActionListener(new BtnAction());
		
		// Ajout de la liste des items de la liste selectionnee
		lstMesItems = new JList(options);
		ascenseur2 = new JScrollPane(lstMesItems);
		contraintes.fill = GridBagConstraints.HORIZONTAL;
		contraintes.anchor = GridBagConstraints.NORTH;
		contraintes.weightx = 1.0;
		contraintes.weighty = 1.0;
		contraintes.gridx = 0; // colonne 1
		contraintes.gridy = 8; // ligne 1 
		contraintes.gridwidth = 3; // le composant s'etend sur 1 colonne 
		contraintes.gridheight = 5; // le composant s'etend sur 3 lignes
		pnlConteneur_main.add(ascenseur2, contraintes);
		lstMesItems.addListSelectionListener(new choixItem());
		
		// Ajout du bouton pour ajouter un item
		btnAddItem = new JButton(Language.getAnInternationalizeString("Accueil_btnAjoutItem"));
		contraintes.fill = GridBagConstraints.HORIZONTAL;
		contraintes.anchor = GridBagConstraints.NORTH;
		contraintes.weightx = 1.0;
		contraintes.weighty = 1.0;
		contraintes.ipadx = 0;
		contraintes.gridx = 0; // colonne 2 
		contraintes.gridy = 13; // ligne 2 
		contraintes.gridwidth = 1; // le composant s'etend sur 2 colonnes 
		contraintes.gridheight = 1; // le composant s'etend sur 1 ligne
		pnlConteneur_main.add(btnAddItem, contraintes);
		btnAddItem.addActionListener(new BtnAction());
		
		// Ajout du bouton pour supprimer un item
		BtnDeleteItem = new JButton(Language.getAnInternationalizeString("Accueil_btnModifierItem"));
		contraintes.fill = GridBagConstraints.HORIZONTAL;
		contraintes.anchor = GridBagConstraints.NORTH;
		contraintes.weightx = 1.0;
		contraintes.weighty = 1.0;
		contraintes.ipadx = 0;
		contraintes.gridx = 2; // colonne 2 
		contraintes.gridy = 13; // ligne 2 
		contraintes.gridwidth = 1; // le composant s'etend sur 2 colonnes 
		contraintes.gridheight = 1; // le composant s'etend sur 1 ligne
		pnlConteneur_main.add(BtnDeleteItem, contraintes);
		BtnDeleteItem.addActionListener(new BtnAction());
		
		// Ajout du panel
		this.add(pnlConteneur_main);
		
		// Taille de la fenetre
		this.setSize(500,450);
		this.setVisible(true);
		Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
		this.setLocation((screen.width - this.getSize().width)/2,(screen.height - this.getSize().height)/2);
	
	}
	
	// Action des boutons, listes, etc
    class BtnAction implements ActionListener {
   	 
        public void actionPerformed(ActionEvent evt) {
        	if(evt.getSource() == btnAddItem) {
        		System.out.println("add item");
        	}
        	else if(evt.getSource() == btnAjoutListe) {
        		AjoutListe AjoutListe = new AjoutListe(Language.getAnInternationalizeString("Accueil_TitreAjoutListe"));
        	}
        	else if(evt.getSource() == btnModifierListe) {
        		System.out.println("Modifier liste");
        	}
        	else if(evt.getSource() == btnRecherche) {
        		System.out.println("Recherche");
        	}
        	else if(evt.getSource() == btnSupprimerListe) {
        		System.out.println("Supprimer liste");
        	}
        	else if(evt.getSource() == BtnDeleteItem) {
        		System.out.println("delete item");
        	}
        	else if(evt.getSource() == miProfil) {
        		Profil profil = new Profil(Language.getAnInternationalizeString("Accueil_TitreProfil"));
        	}
        	
        }               
    }	
    
    
    class choixItem implements ListSelectionListener {

		public void valueChanged(ListSelectionEvent e) {
			// TODO Auto-generated method stub
			System.out.println(lstMesItems.getSelectedValue());
		}               
    }
    
    class choixListe implements ListSelectionListener {
    	 
    	public void valueChanged(ListSelectionEvent e) {
			// TODO Auto-generated method stub
    		System.out.println(lstChoixListe.getSelectedValue());
		}               
    }
	
}
